/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lu.med.praxiswahl.wahlumed.service.beans.serviceinterface;

import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.model.beans.DoctorsTBL;

/**
*
* @author Patrick kendzo
* Email: pkendzo@msn.com
*/
public interface CustomerServiceInt
{
    
    public static final int RET_OPERATION_DONE_PROPERLY = 0;
    public static final int RET_PATIENT_NOT_FOUND = 1;
    public static final int RET_OPERATION_FAILED = 2;
    
    
    
    /* Fragt nach, ob die entsprechende Matricule bereits vergeben wurde
     * es wird true zurückgegeben, wenn die Matricule noch frei ist
     */ 
    public boolean isMatriculeAvailable(String matricule);
    
    /* Wird benutzt um den Matrikelnummer eines Patienten zu erstellen
     * und somit weitere auf Aufgabe, wie Information über einen Patienten 
     * zu tätigen.
     */
    public int createCustomer(String matricule);
    
    /* Setzt der als Parameter eingegebene Matrikeln zur aktuellen customer bzw. 
     * Patientin. Dies ermöglicht mit der so gesetzte Patientin abfrage und 
     * update durchzuführen.
     */
    public void setCustomerMatricule(String matricule);
    
    /* Speichert eine Patientin, nachdem man Informationen über sie gesetzt hat */
    public void save_customer();
    
    public String getArbeitgeber(String matricule);
    public String getArbeitgeberTel(String matricule);
    public String getBesonderheiten(String matricule);
    public String getGeburtsdatum(String matricule);
    
    public String[] getNachname(String matricule);
    
    public String getKrankMeldung(String matricule);
    public String getNotizen(String matricule);
    public String getPrivatAnschrift(String matricule);
    public String getPrivatEMail(String matricule);
    public String getPrivatFax(String matricule);
    public String getPrivatGSM(String matricule);
    public String getPrivatOrt(String matricule);
    public String getPrivatPLZ(String matricule);
    public String getPrivatTel(String matricule);
    public String getVorname(String matricule);
    public String getWebsite(String matricule);
    public String getAlteAdresse(String matricule); 
    public Long getHausArtz(String matricule);
    public String getSprache(String matricule);
    
    public String getCustomerMatricule();
    public CustomerTBL getCustomer(String matricule);

    public String[] getNachnameEhemann(String matricule);
    public String getVornameEhemann(String matricule);
    public String getGeburtstagEhemann(String matricule);
    public String getGeheimNummer(String matricule);
    public String getVersicherung_Auswahl(String matricule);
    
    
    public void setVornameEhemann(String vornameEhemann);  
    public void setNachnameEhemann(String[] nachname);
    public void setGeburtstagEhemann(String geburtstag);
    
    /*
     * Liefert ein String Array mit den Matricule aller Patienten, deren
     * Namen den Suchstring beinhalten
     */
    public String[] getMatriculeOfName(String suchStr);
    
    /*
     * Liefert ein String Array mit den Matricule aller Patienten, deren
     * Matricule einen Teil des Suchstrings beinhalten
     */
    public String[] getMatrciuleOfMatriculePart(String suchStr);
    
    /*
      Liefert ein String Array mit den Matricule aller Patienten, deren
      Vornamen einen Teil des Suchstrings beinhalten
    */
    public String[] getMatriculeOfVorname(String suchStr);
    
    public void setArbeitgeber(String arbeitgeber);
    public void setArbeitgeberTel(String arbeitgeberTel);
    public void setBesonderheiten(String besonderheiten);
    public void setGeburtsdatum(String geburtsdatum);
    
    /*
     * Der feld nachname sollte immer eine Kapazität von 3 haben, sogar, wenn es nur ein einziges Nachname gibt.
     * Die 2 restlichen Felder müssen mit leeren String gefüllt werden!!!
     */
    public void setNachname(String[] nachname); 
    
    public void setNotizen(String notizen);
    
    /* Bei neu Einträge wird die noch aktuelle Anschrift (falls exist)*/
    public void setPrivatAnschrift(String privatAnschrift);
    
    public void setPrivatEMail(String privatEMail);
    public void setPrivatFax(String privatFax);
    public void setPrivatGSM(String privatGSM);
    public void setPrivatOrt(String privatOrt);
    public void setPrivatPLZ(String privatPLZ);
    public void setPrivatTel(String privatTel);
    public void setVorname(String vorname);    
    
    public String getVersicherung_traeger_Of(String matricule); // Mögliche Werte: selbst, partner, (vater, mutter) --> Eltern.   
    public void  setVersicherung_traeger_Of(String durch);
       
    public void setWebsite(String val);    
    public void setAlteAdresse(String val);
    public void setSprache(String sprache);
    public void setHausArtz(DoctorsTBL hausartz);
    public void setGeheimNummer(String geheimnummer);
    public void setVersicherung_Auswahl(String versichertAuswahl);
    public void setKrankMeldung(String krankMeldungText);
    
    
    // Ändert die Matricule des Patienten, alle Tabellen, die auf die Matrciule
    // verweisen müssen entsprechend angepasst werden
    public int changeMatricule(String from, String to);
    
    // Löscht die Patienten aus der Datenbank
    public int deletePatient(String matricule);
    
    // Liefert alle Matricule aus der Datenbank zurück
    public String[] getAllMatricules();
    
    /* liefert alle vorhandenen Patienten */
    public CustomerTBL[] getAllCustomer();
    
    
    public String getZusatzVersicherung();
	public void setZusatzVersicherung(String zusatz_versicherung);
    
	public CustomerTBL[] getCustomerByFirstNameAndLastName(String firstName, String lastName);
	public CustomerTBL[] getCustomerByFirstNameAndMatricule(String firstName, String matricule);
	public CustomerTBL[] getCustomerByLastNameAndMatricule(String lastName, String matricule);
	public CustomerTBL[] getCustomerByFirstNameAndLastNameAndMatricule(String firstName, String lastName, String matricule);
	public CustomerTBL[] retrieveCustomer(String searchStr);
	

}
